ExtJS Layout Management

Web Development - এক্সটিজেএস (ExtJS) -

ExtJS তে Layout Management অ্যাপ্লিকেশনের ইউজার ইন্টারফেস (UI) কিভাবে ডিভাইড বা সংস্থান হবে তা নিয়ন্ত্রণ করে। এটি বিভিন্ন ধরণের layout (লেআউট) পদ্ধতি সরবরাহ করে, যার মাধ্যমে ডেভেলপাররা সহজেই বিভিন্ন ধরনের ইউজার ইন্টারফেস ডিজাইন করতে পারে, যেমন ফ্লেক্সিবল, রেসপন্সিভ, এবং জটিল ডায়নামিক লেআউট।

ExtJS তে লেআউট ব্যবস্থাপনা অত্যন্ত শক্তিশালী, কারণ এটি components কে স্বয়ংক্রিয়ভাবে সাইজ, অবস্থান এবং পুনঃসংস্করণ করে। এটি একটি অ্যাপ্লিকেশন বা ওয়েব পেজের জন্য পুরোপুরি কাস্টমাইজড এবং রেসপন্সিভ ডিজাইন তৈরি করতে সহায়তা করে।


ExtJS Layout Management এর প্রকার

ExtJS তে বিভিন্ন প্রকারের লেআউট আছে, প্রতিটি লেআউট বিশেষ উদ্দেশ্যে ব্যবহৃত হয়। এই লেআউটগুলোর মধ্যে সাধারণত ব্যবহৃত কয়েকটি হলো:

  1. border Layout
  2. hbox এবং vbox Layout
  3. fit Layout
  4. card Layout
  5. table Layout
  6. accordion Layout

১. Border Layout

border লেআউটটি খুবই জনপ্রিয় এবং এটি সাধারণত পুরো অ্যাপ্লিকেশনে বা ওয়েব পেজে ব্যবহৃত হয়, যেখানে নির্দিষ্ট অংশগুলো (উদাহরণস্বরূপ, নেভিগেশন বার, কন্টেন্ট, ফুটার) স্পেসিফিক অবস্থানে থাকে। এটি একটি নর্দ্ধ (North), সাউথ (South), ইস্ট (East), ওয়েস্ট (West), এবং সেন্টার (Center) অংশে বিভক্ত করা হয়।

উদাহরণ:

Ext.create('Ext.panel.Panel', {
    title: 'Border Layout Example',
    layout: 'border', // লেআউট টাইপ
    height: 500,
    width: 800,
    items: [
        {
            xtype: 'panel',
            region: 'north', // উপরের অংশ
            height: 100,
            title: 'Header'
        },
        {
            xtype: 'panel',
            region: 'west',  // বাম পাশ
            width: 200,
            title: 'Navigation'
        },
        {
            xtype: 'panel',
            region: 'center', // মূল কন্টেন্ট
            title: 'Main Content',
            html: '<p>Main Content goes here</p>'
        }
    ],
    renderTo: Ext.getBody()
});
  • region: এটি প্রতিটি প্যানেলকে নির্দিষ্ট একটি অঞ্চলে (North, South, East, West, Center) স্থাপন করতে ব্যবহৃত হয়।
  • layout: এখানে border ব্যবহার করা হয়েছে, যা অ্যাপ্লিকেশনকে বিভিন্ন অংশে ভাগ করে।

২. HBox এবং VBox Layout

hbox এবং vbox লেআউটগুলি ফ্লেক্সবক্সের উপর ভিত্তি করে কাজ করে। hbox লেআউটগুলি উপাদানগুলিকে অনুভূমিকভাবে (হরিজেন্টালি) সাজায়, এবং vbox লেআউটগুলি উপাদানগুলোকে উল্লম্বভাবে (ভার্টিকালি) সাজায়।

HBox (হরিজেন্টাল বক্স):

উদাহরণ:

Ext.create('Ext.container.Container', {
    layout: 'hbox', // অনুভূমিক লেআউট
    width: 600,
    height: 100,
    items: [
        {
            xtype: 'panel',
            title: 'Panel 1',
            flex: 1,
            html: 'First Panel'
        },
        {
            xtype: 'panel',
            title: 'Panel 2',
            flex: 2,
            html: 'Second Panel'
        }
    ],
    renderTo: Ext.getBody()
});
  • flex: এখানে flex প্রপার্টি ব্যবহার করা হয়েছে, যা উপাদানগুলিকে তাদের প্রদত্ত স্পেসের অনুপাত অনুযায়ী সম্প্রসারণ বা সংকোচন করতে সহায়ক।

VBox (ভর্টিকাল বক্স):

উদাহরণ:

Ext.create('Ext.container.Container', {
    layout: 'vbox', // উল্লম্ব লেআউট
    width: 200,
    height: 300,
    items: [
        {
            xtype: 'panel',
            title: 'Panel 1',
            height: 100,
            html: 'First Panel'
        },
        {
            xtype: 'panel',
            title: 'Panel 2',
            height: 100,
            html: 'Second Panel'
        }
    ],
    renderTo: Ext.getBody()
});

৩. Fit Layout

fit লেআউটটি খুবই সরল এবং এটি একমাত্র উপাদানকে পুরো কনটেইনারে ফিট করে দেয়। সাধারণত এটি একক উপাদানকে পুরো স্ক্রিনে বা কন্টেইনারে প্রদর্শন করতে ব্যবহৃত হয়।

উদাহরণ:

Ext.create('Ext.panel.Panel', {
    title: 'Fit Layout Example',
    layout: 'fit',
    height: 400,
    width: 600,
    items: [
        {
            xtype: 'panel',
            title: 'Single Panel',
            html: 'This is the only panel in the fit layout.'
        }
    ],
    renderTo: Ext.getBody()
});

৪. Card Layout

card লেআউটটি ব্যবহার করে আপনি একাধিক প্যানেল বা ভিউগুলোর মধ্যে স্যুইচ করতে পারেন, একে একে দেখানোর জন্য। এটি সাধারণত ওয়িজার্ড বা ট্যাব স্টাইলের UI এর জন্য ব্যবহৃত হয়।

উদাহরণ:

Ext.create('Ext.panel.Panel', {
    title: 'Card Layout Example',
    layout: 'card',
    height: 300,
    width: 400,
    activeItem: 0, // প্রাথমিকভাবে যে প্যানেলটি দেখা যাবে
    items: [
        {
            xtype: 'panel',
            title: 'Card 1',
            html: 'Content of Card 1'
        },
        {
            xtype: 'panel',
            title: 'Card 2',
            html: 'Content of Card 2'
        }
    ],
    tbar: [
        {
            text: 'Next',
            handler: function() {
                var panel = this.up('panel');
                var layout = panel.getLayout();
                layout.next(); // পরবর্তী কার্ডে চলে যাবে
            }
        }
    ],
    renderTo: Ext.getBody()
});

৫. Table Layout

table লেআউটটি উপাদানগুলোকে একটি HTML টেবিলের মতো সাজায়। এটি বিশেষভাবে ফর্ম বা অন্যান্য ডেটা উপস্থাপনার জন্য ব্যবহৃত হয়, যেখানে উপাদানগুলো সারণী আকারে সাজানো থাকে।

উদাহরণ:

Ext.create('Ext.form.Panel', {
    title: 'Table Layout Example',
    layout: 'table',
    width: 400,
    items: [
        {
            xtype: 'textfield',
            fieldLabel: 'Name',
            colspan: 2
        },
        {
            xtype: 'textfield',
            fieldLabel: 'Email'
        },
        {
            xtype: 'textfield',
            fieldLabel: 'Phone'
        }
    ],
    renderTo: Ext.getBody()
});

৬. Accordion Layout

accordion লেআউটটি একাধিক প্যানেল তৈরি করে, এবং শুধুমাত্র এক প্যানেলকে একে একে দেখতে সক্ষম করে। এটি সাধারণত সাইডবার নেভিগেশনের জন্য ব্যবহৃত হয়।

উদাহরণ:

Ext.create('Ext.panel.Panel', {
    title: 'Accordion Layout Example',
    layout: 'accordion',
    width: 300,
    items: [
        {
            xtype: 'panel',
            title: 'Panel 1',
            html: 'Content of Panel 1'
        },
        {
            xtype: 'panel',
            title: 'Panel 2',
            html: 'Content of Panel 2'
        }
    ],
    renderTo: Ext.getBody()
});

সারাংশ

  • Layout Management ExtJS এর অত্যন্ত গুরুত্বপূর্ণ একটি অংশ যা ইউজার ইন্টারফেসের বিভিন্ন উপাদানকে সঠিকভাবে সাজাতে সাহায্য করে।
  • ExtJS তে বিভিন্ন ধরনের লেআউট ব্যবহৃত হয়, যেমন border, vbox, hbox, fit, card, table, এবং accordion, যা ডেভেলপারদের সহজে অ্যাপ্লিকেশন ডিজাইন করতে সহায়ক।
  • এই লেআউটগুলো স্বয়ংক্রিয়ভাবে উপাদানগুলোর সাইজ এবং অবস্থান নিয়ন্ত্রণ করে, যা UI ডেভেলপমেন্টে অনেক সুবিধা প্রদান করে।
Content added By

Layout কী এবং কেন প্রয়োজন?

ExtJS একটি শক্তিশালী জাভাস্ক্রিপ্ট ফ্রেমওয়ার্ক যা ব্যবহারকারীর ইন্টারফেস (UI) তৈরি করতে ব্যবহৃত হয়। অ্যাপ্লিকেশন ডেভেলপমেন্টে ইউজার ইন্টারফেস (UI) ডিজাইন করার সময়, Layout ব্যবহৃত হয় যাতে অ্যাপ্লিকেশনের কম্পোনেন্টগুলো সঠিকভাবে এবং প্রফেশনালি সজ্জিত হয়। ExtJS তে Layout হল একটি ব্যবস্থা যা UI কম্পোনেন্টগুলিকে উপযুক্তভাবে এবং স্বাভাবিকভাবে স্ক্রীনে ব্যবস্থা করার জন্য ব্যবহৃত হয়।


Layout কী?

Layout হল একটি সিস্টেম বা কৌশল যার মাধ্যমে UI কম্পোনেন্টগুলোকে একটি নির্দিষ্ট সজ্জায় এবং অর্ডারে রেন্ডার (প্রদর্শন) করা হয়। ExtJS তে Layout সিস্টেমে কম্পোনেন্টগুলো বিভিন্ন ধরণের কন্টেইনারে সাজানো হয়, যা কম্পোনেন্টের অবস্থান এবং আকার নির্ধারণ করে।

ExtJS তে Layout বিভিন্ন ধরনের হতে পারে, যেমন BorderLayout, FitLayout, CardLayout, HBoxLayout, VBoxLayout ইত্যাদি।


Layout এর প্রধান কাজ

  • কম্পোনেন্টের অবস্থান নির্ধারণ: কম্পোনেন্টগুলোকে একে অপরের সাথে সঠিকভাবে স্থান দেওয়া।
  • কম্পোনেন্টের আকার নিয়ন্ত্রণ: কন্টেইনার বা কম্পোনেন্টের আকার এবং সাইজ অটোমেটিক্যালি নিয়ন্ত্রণ করা।
  • UI উপাদানের উপযুক্ত সজ্জা: বিভিন্ন UI কম্পোনেন্টের মধ্যে সঠিক জায়গা ভাগ করে দেওয়া যাতে তারা সুন্দরভাবে সজ্জিত হয়।

কেন Layout প্রয়োজন?

  1. কম্পোনেন্টের সঠিক অবস্থান: Layout ব্যবহারের মাধ্যমে, আপনি UI কম্পোনেন্টগুলোর সঠিক অবস্থান নির্ধারণ করতে পারেন। এটি UI ডিজাইনকে পরিষ্কার এবং বোধগম্য করে তোলে।
  2. রেসপন্সিভ ডিজাইন: Layout সিস্টেমের মাধ্যমে অ্যাপ্লিকেশনটি বিভিন্ন স্ক্রীন সাইজে স্বয়ংক্রিয়ভাবে মানিয়ে যায়। এটি মোবাইল এবং ডেস্কটপ উভয় প্ল্যাটফর্মে কাজ করার উপযোগী করে তোলে।
  3. কম্পোনেন্টের আকার এবং সাইজ নিয়ন্ত্রণ: Layout ব্যবহার করলে, আপনি কম্পোনেন্টগুলোর আকার, উচ্চতা, প্রস্থ এবং তাদের মধ্যে ব্যবধান নিয়ন্ত্রণ করতে পারেন। এটি UI কে আরও সুসংগঠিত এবং প্রতিক্রিয়া হিসেবে সহজ করে তোলে।
  4. ডাইনামিক কন্ট্রোল: Layout সিস্টেম ব্যবহার করার মাধ্যমে আপনি ডাইনামিকভাবে UI কম্পোনেন্টগুলোকে যোগ, মুছে ফেলতে এবং স্থান পরিবর্তন করতে পারেন।
  5. কাস্টমাইজেশন: ExtJS তে Layout সিস্টেম কাস্টমাইজযোগ্য, যার মাধ্যমে আপনি আপনার অ্যাপ্লিকেশনের জন্য একাধিক লেআউট তৈরী করতে পারেন, যেমন: border, fit, hbox, vbox ইত্যাদি।

ExtJS তে Layout এর বিভিন্ন ধরনের

১. BorderLayout

BorderLayout layout তে, কন্টেইনারটি পাঁচটি ভিন্ন অংশে বিভক্ত থাকে: north, south, east, west, এবং center। এটি একটি অন্যতম জনপ্রিয় লেআউট যা সাধারণত সাইডবার, টুলবার, মেনু বার ইত্যাদির জন্য ব্যবহৃত হয়।

উদাহরণ:

Ext.create('Ext.panel.Panel', {
    title: 'BorderLayout Example',
    layout: 'border',
    items: [
        {
            region: 'north',
            xtype: 'panel',
            height: 100,
            html: 'North Region'
        },
        {
            region: 'west',
            xtype: 'panel',
            width: 200,
            html: 'West Region'
        },
        {
            region: 'center',
            xtype: 'panel',
            html: 'Center Region'
        }
    ],
    renderTo: Ext.getBody()
});

২. FitLayout

FitLayout তে কন্টেইনারের একমাত্র কম্পোনেন্ট পুরো কন্টেইনারে ফিট হয়ে যায়। এটি একক কম্পোনেন্টের জন্য কার্যকর যেখানে পুরো কন্টেইনারে একমাত্র কম্পোনেন্ট প্রদর্শিত হবে।

উদাহরণ:

Ext.create('Ext.panel.Panel', {
    title: 'FitLayout Example',
    layout: 'fit',
    items: [{
        xtype: 'panel',
        html: 'This panel will fill the container.'
    }],
    renderTo: Ext.getBody()
});

৩. HBoxLayout এবং VBoxLayout

HBoxLayout এবং VBoxLayout হল Horizontal এবং Vertical Box Layouts। HBoxLayout এর মাধ্যমে কম্পোনেন্টগুলো অনুভূমিকভাবে সাজানো হয়, এবং VBoxLayout এর মাধ্যমে কম্পোনেন্টগুলো উল্লম্বভাবে সাজানো হয়।

HBoxLayout উদাহরণ:

Ext.create('Ext.panel.Panel', {
    title: 'HBoxLayout Example',
    layout: 'hbox',
    items: [
        { xtype: 'panel', html: 'Panel 1' },
        { xtype: 'panel', html: 'Panel 2' }
    ],
    renderTo: Ext.getBody()
});

VBoxLayout উদাহরণ:

Ext.create('Ext.panel.Panel', {
    title: 'VBoxLayout Example',
    layout: 'vbox',
    items: [
        { xtype: 'panel', html: 'Panel 1' },
        { xtype: 'panel', html: 'Panel 2' }
    ],
    renderTo: Ext.getBody()
});

৪. CardLayout

CardLayout তে বিভিন্ন প্যানেল বা কম্পোনেন্টগুলো কার্ড এর মতো সাজানো থাকে, এবং একে অপরের উপর চাপানো হয়। এটি সাধারণত ট্যাব, উইজেট বা স্টেপ-বাই-স্টেপ ফর্মে ব্যবহৃত হয়।

উদাহরণ:

Ext.create('Ext.panel.Panel', {
    title: 'CardLayout Example',
    layout: 'card',
    activeItem: 0, // কোন কম্পোনেন্টটি প্রথমে দেখানো হবে
    items: [
        { html: 'Card 1' },
        { html: 'Card 2' }
    ],
    renderTo: Ext.getBody()
});

সারাংশ

Layout ExtJS তে একটি অত্যন্ত গুরুত্বপূর্ণ অংশ, যা অ্যাপ্লিকেশন ইউজার ইন্টারফেসে বিভিন্ন কম্পোনেন্ট সঠিকভাবে সাজাতে সাহায্য করে। এটি ডেভেলপারদের জন্য একটি সহজ এবং শক্তিশালী উপায়, যা অ্যাপ্লিকেশনগুলোর উন্নত ইউজার ইন্টারফেস ডিজাইন করতে সাহায্য করে।

ExtJS Layout ব্যবহারের মাধ্যমে আপনি:

  • কম্পোনেন্টের সঠিক অবস্থান এবং আকার নির্ধারণ করতে পারেন।
  • রেসপন্সিভ ডিজাইন নিশ্চিত করতে পারেন যাতে আপনার অ্যাপ্লিকেশন বিভিন্ন ডিভাইসে উপযুক্তভাবে কাজ করে।
  • ডাইনামিক UI কম্পোনেন্ট তৈরি এবং তাদের মধ্যে পারস্পরিক সম্পর্ক স্থাপন করতে পারেন।
Content added By

ExtJS এর বিভিন্ন Layout (HBox, VBox, Border, Fit)

ExtJS একটি অত্যন্ত শক্তিশালী ফ্রেমওয়ার্ক যা ডাইনামিক এবং রেসপন্সিভ ইউজার ইন্টারফেস তৈরি করার জন্য বিভিন্ন ধরনের লেআউট প্রদান করে। এগুলি বিশেষভাবে ব্যবহারকারীর ইন্টারফেসের উপাদানগুলোকে বিভিন্ন উপায়ে সাজানোর জন্য ব্যবহৃত হয়।

ExtJS-এ মূলত ৫টি প্রধান লেআউট রয়েছে, যার মধ্যে HBox, VBox, Border, এবং Fit অন্যতম। এই লেআউটগুলোকে সহজভাবে বুঝতে এবং ব্যবহার করতে সাহায্য করার জন্য নিচে প্রতিটির বিস্তারিত ব্যাখ্যা দেওয়া হলো।


১. HBox Layout

HBox লেআউট (Horizontal Box Layout) উপাদানগুলোকে অনুভূমিকভাবে (হরাইজেন্টালি) সাজাতে ব্যবহৃত হয়। এই লেআউটটি সাধারণত টুলবার, নেভিগেশন বার বা অন্যান্য উপাদান যেখানে একটি লাইন বা এক্সটেন্ডেড অনুভূমিক সারি প্রয়োজন, সেখানে ব্যবহার করা হয়।

HBox Layout এর ব্যবহার:

Ext.create('Ext.container.Container', {
    renderTo: Ext.getBody(),
    layout: 'hbox',  // HBox layout ব্যবহার
    items: [{
        xtype: 'panel',
        title: 'Panel 1',
        html: 'This is panel 1',
        width: 200
    }, {
        xtype: 'panel',
        title: 'Panel 2',
        html: 'This is panel 2',
        width: 300
    }]
});

এখানে, দুটি প্যানেল HBox লেআউটে অনুভূমিকভাবে সাজানো হয়েছে।

বৈশিষ্ট্য:

  • উপাদানগুলো একে অপরের পাশে বসে থাকে।
  • উপাদানগুলোর মধ্যে গ্যাপ নিয়ন্ত্রণ করতে flex বা margin ব্যবহার করা যায়।

২. VBox Layout

VBox লেআউট (Vertical Box Layout) উপাদানগুলোকে উল্লম্বভাবে (ভার্টিকালি) সাজাতে ব্যবহৃত হয়। এটি সাধারণত ফর্ম বা অন্যান্য উপাদান যেখানে একটি স্তম্ভে উপাদানগুলো সজ্জিত করা দরকার, সেখানে ব্যবহৃত হয়।

VBox Layout এর ব্যবহার:

Ext.create('Ext.container.Container', {
    renderTo: Ext.getBody(),
    layout: 'vbox',  // VBox layout ব্যবহার
    items: [{
        xtype: 'panel',
        title: 'Panel 1',
        html: 'This is panel 1',
        height: 200
    }, {
        xtype: 'panel',
        title: 'Panel 2',
        html: 'This is panel 2',
        height: 200
    }]
});

এখানে, দুটি প্যানেল VBox লেআউটে উল্লম্বভাবে সাজানো হয়েছে।

বৈশিষ্ট্য:

  • উপাদানগুলো একে অপরের নিচে সাজানো থাকে।
  • উপাদানগুলোর মধ্যে স্থান নির্ধারণ করতে flex এবং margin ব্যবহার করা যায়।

৩. Border Layout

Border লেআউট একটি বহুল ব্যবহৃত লেআউট, যেখানে একটি কেন্দ্রীয় এলাকা এবং চারটি (উত্তর, দক্ষিণ, পূর্ব, পশ্চিম) পার্শ্ব এলাকা থাকে। এটি অ্যাপ্লিকেশনের একাধিক বিভাগের জন্য খুব উপকারী, যেখানে বিভিন্ন অঞ্চলে বিভিন্ন উপাদান বা ভিউ থাকতে পারে।

Border Layout এর ব্যবহার:

Ext.create('Ext.container.Viewport', {
    layout: 'border',  // Border layout ব্যবহার
    items: [{
        xtype: 'panel',
        region: 'north',  // উত্তর
        title: 'North Panel',
        height: 100
    }, {
        xtype: 'panel',
        region: 'west',   // পশ্চিম
        title: 'West Panel',
        width: 200
    }, {
        xtype: 'panel',
        region: 'center', // কেন্দ্র
        title: 'Center Panel',
        html: 'This is center panel'
    }]
});

এখানে, region কনফিগারেশন ব্যবহার করে প্যানেলগুলোকে বিভিন্ন অঞ্চলে (উত্তর, দক্ষিণ, পশ্চিম, পূর্ব, কেন্দ্র) স্থাপন করা হয়েছে।

বৈশিষ্ট্য:

  • north, south, east, west, center নামক অঞ্চলগুলোর মধ্যে উপাদানগুলো সাজানো হয়।
  • center অঞ্চলটি স্বয়ংক্রিয়ভাবে উপলব্ধ সমস্ত স্থান গ্রহণ করে।

৪. Fit Layout

Fit লেআউট একটি খুব সহজ লেআউট, যা শুধুমাত্র একটি উপাদানকে পুরো কন্টেইনারের মধ্যে ফিট করতে ব্যবহৃত হয়। এটি সাধারণত এমন ক্ষেত্রে ব্যবহার করা হয় যেখানে কেবল একক উপাদান বা কম্পোনেন্ট প্রদর্শিত হবে এবং তা পুরো কন্টেইনারে প্রস্থ এবং উচ্চতায় ফিট হবে।

Fit Layout এর ব্যবহার:

Ext.create('Ext.container.Container', {
    renderTo: Ext.getBody(),
    layout: 'fit',  // Fit layout ব্যবহার
    items: [{
        xtype: 'panel',
        title: 'Fit Panel',
        html: 'This is the only panel inside the container'
    }]
});

এখানে, একক প্যানেলটি কন্টেইনারের পুরো এলাকা দখল করে ফিট হচ্ছে।

বৈশিষ্ট্য:

  • শুধুমাত্র একটি উপাদান থাকে, যা পুরো কন্টেইনারকে পূর্ণ করে।
  • প্রায়শই ব্যবহার করা হয় যখন কোনো একক ভিউ বা প্যানেল পুরো স্ক্রীনে দেখাতে হয়।

সারাংশ

  1. HBox Layout:
    • উপাদানগুলো অনুভূমিকভাবে (horizontal) সাজানো থাকে।
    • ব্যবহৃত হয় যখন উপাদানগুলো পাশে পাশে দেখাতে হয়।
  2. VBox Layout:
    • উপাদানগুলো উল্লম্বভাবে (vertical) সাজানো থাকে।
    • ব্যবহৃত হয় যখন উপাদানগুলো একে অপরের নিচে দেখাতে হয়।
  3. Border Layout:
    • এটি একটি চারটি পার্শ্ব অঞ্চল (উত্তর, দক্ষিণ, পূর্ব, পশ্চিম) এবং একটি কেন্দ্রীয় অঞ্চল নিয়ে কাজ করে।
    • অ্যাপ্লিকেশনগুলিতে একাধিক অঞ্চলের জন্য উপযুক্ত।
  4. Fit Layout:
    • একক উপাদানটি পুরো কন্টেইনারে ফিট করে।
    • এটি সাধারণত একক উপাদান বা ভিউ প্রদর্শনের জন্য ব্যবহৃত হয়।

এই লেআউটগুলো আপনাকে বিভিন্ন ধরনের অ্যাপ্লিকেশন তৈরি করার জন্য অনেক নমনীয়তা প্রদান করে, যা প্রয়োজনীয়তা অনুসারে ভিন্ন ভিন্ন ডিভাইসে উপযুক্তভাবে প্রদর্শিত হতে পারে।

Content added By

Layout Configuration এবং Nesting Layouts

ExtJS এ Layout Configuration এবং Nesting Layouts দুটি গুরুত্বপূর্ণ কনসেপ্ট যা ইউজার ইন্টারফেসের কন্ট্রোল এবং কম্পোনেন্টগুলির অবস্থান নির্ধারণ করতে ব্যবহৃত হয়। এগুলি অ্যাপ্লিকেশনের বিভিন্ন UI উপাদানকে সঠিকভাবে সাজানো এবং ডাইনামিকভাবে অ্যাডজাস্ট করা সম্ভব করে।


Layout Configuration (লেআউট কনফিগারেশন)

Layout হল একটি কম্পোনেন্টের ভিতরের উপাদানগুলিকে সাজানোর পদ্ধতি। ExtJS তে বিভিন্ন ধরনের লেআউট আছে, যা আপনার অ্যাপ্লিকেশনের UI ডিজাইন অনুযায়ী ব্যবহার করা হয়। এর মাধ্যমে কম্পোনেন্টগুলির অবস্থান ও সাইজ নির্ধারণ করা যায়।

লেআউটের প্রধান ধরনগুলি:

  1. Fit Layout: একটি একক কম্পোনেন্টের ভিতরে সব উপাদানকে পূর্ণভাবে ফিট করে।
  2. Border Layout: বিভিন্ন এলাকা (উত্তর, দক্ষিণ, পূর্ব, পশ্চিম, কেন্দ্র) নিয়ে একটি অ্যাপ্লিকেশন লেআউট তৈরি করে।
  3. Card Layout: একাধিক প্যানেল বা কম্পোনেন্টকে একটি কার্ডের মতো পরিবর্তনশীল অবস্থায় দেখায়।
  4. VBox / HBox Layout: কম্পোনেন্টগুলিকে ভার্টিকালি (VBox) বা হরিজেন্টালি (HBox) সাজায়।
  5. Table Layout: টেবিলের মতো কম্পোনেন্টগুলিকে সারি এবং কলামে সাজায়।

Fit Layout উদাহরণ:

Ext.create('Ext.panel.Panel', {
    title: 'Fit Layout Example',
    width: 400,
    height: 300,
    layout: 'fit',
    items: [{
        xtype: 'panel',
        html: 'This is a fit layout panel.',
        bodyPadding: 10
    }],
    renderTo: Ext.getBody()
});
  • layout: 'fit': এটি একমাত্র এক কম্পোনেন্টকে পুরো প্যানেলের মধ্যে ফিট করে।

Border Layout উদাহরণ:

Ext.create('Ext.panel.Panel', {
    title: 'Border Layout Example',
    width: 600,
    height: 400,
    layout: 'border',
    items: [{
        region: 'north',
        xtype: 'panel',
        height: 50,
        html: 'North Region'
    }, {
        region: 'west',
        xtype: 'panel',
        width: 200,
        html: 'West Region'
    }, {
        region: 'center',
        xtype: 'panel',
        html: 'Center Region'
    }],
    renderTo: Ext.getBody()
});
  • layout: 'border': এতে বিভিন্ন region গুলি নির্দিষ্ট করে দেওয়া হয় (উত্তর, দক্ষিণ, পূর্ব, পশ্চিম, কেন্দ্র)।

VBox Layout উদাহরণ:

Ext.create('Ext.panel.Panel', {
    title: 'VBox Layout Example',
    width: 400,
    height: 300,
    layout: {
        type: 'vbox',
        align: 'stretch'  // stretch alignment
    },
    items: [{
        xtype: 'panel',
        title: 'Panel 1',
        html: 'This is the first panel.',
        flex: 1 // flex defines the space it will occupy
    }, {
        xtype: 'panel',
        title: 'Panel 2',
        html: 'This is the second panel.',
        flex: 2 // this panel will occupy double space compared to Panel 1
    }],
    renderTo: Ext.getBody()
});
  • layout: { type: 'vbox' }: এটি প্যানেলগুলিকে ভার্টিকালি সাজায়। flex ব্যবহার করে প্যানেলগুলির উচ্চতা নির্ধারণ করা হয়।

Nesting Layouts (নেস্টিং লেআউট)

Nesting Layouts হল একাধিক লেআউট একে অপরের মধ্যে স্থাপন করা। এর মাধ্যমে একটি কমপ্লেক্স UI তৈরি করা যায় যেখানে একাধিক লেআউট একে অপরের মধ্যে অন্তর্ভুক্ত থাকে।

Nesting Layout উদাহরণ:

Ext.create('Ext.panel.Panel', {
    title: 'Nesting Layout Example',
    width: 600,
    height: 400,
    layout: 'border',
    items: [{
        region: 'north',
        xtype: 'panel',
        height: 50,
        html: 'North Region'
    }, {
        region: 'west',
        xtype: 'panel',
        width: 200,
        layout: 'vbox',  // Nested Layout
        items: [{
            xtype: 'panel',
            title: 'Panel 1',
            html: 'This is the first nested panel.',
            flex: 1
        }, {
            xtype: 'panel',
            title: 'Panel 2',
            html: 'This is the second nested panel.',
            flex: 1
        }]
    }, {
        region: 'center',
        xtype: 'panel',
        html: 'Center Region'
    }],
    renderTo: Ext.getBody()
});

এখানে, west রিজনে একটি vbox লেআউট ব্যবহার করা হয়েছে, যা দুটি প্যানেলকে ভার্টিকালি সাজায়। এর মাধ্যমে আপনি একাধিক লেআউট একে অপরের মধ্যে স্থাপন করতে পারেন, যা nesting layouts বলে পরিচিত।


ExtJS Layout Configuration এর সুবিধা

  1. ফ্লেক্সিবল ডিজাইন: লেআউট কনফিগারেশন বিভিন্ন ধরনের UI উপাদানকে সাজানোর জন্য ব্যবহার করা যায় এবং ইউজারের স্ক্রীন সাইজ অনুযায়ী উপাদানগুলি ডাইনামিকভাবে পরিবর্তন হয়।
  2. ব্যবহারকারী ইন্টারফেসের উন্নয়ন: নেস্টিং লেআউট ব্যবহার করে জটিল UI গঠন করা সহজ।
  3. রেসপন্সিভ ডিজাইন: বিভিন্ন লেআউট ডিভাইসের স্ক্রীনে সহজেই অ্যাডজাস্ট করা যায়, যেমন মোবাইল বা ট্যাবলেট।

সারাংশ

  • Layout Configuration ExtJS এর মাধ্যমে UI কম্পোনেন্টগুলিকে সঠিকভাবে সাজানোর জন্য ব্যবহৃত হয়। বিভিন্ন লেআউট ধরনের মধ্যে fit, border, vbox/hbox, এবং table layout অন্তর্ভুক্ত রয়েছে।
  • Nesting Layouts একাধিক লেআউট একে অপরের মধ্যে রাখা হয়, যা জটিল এবং ডাইনামিক UI ডিজাইন তৈরি করতে সাহায্য করে।

এই কনফিগারেশনগুলির মাধ্যমে আপনি আরও কার্যকরী এবং ব্যবহারকারী-বান্ধব ইন্টারফেস তৈরি করতে পারেন, যা বিভিন্ন প্ল্যাটফর্মে স্বয়ংক্রিয়ভাবে সঠিকভাবে কাজ করবে।

Content added By

Responsive Layout তৈরি করা

ExtJS তে Responsive Layout তৈরি করা একটি গুরুত্বপূর্ণ প্রক্রিয়া, যেখানে অ্যাপ্লিকেশনের ইউজার ইন্টারফেস (UI) বিভিন্ন ডিভাইস এবং স্ক্রীন সাইজ অনুযায়ী অভিযোজিত (adjust) হয়। Responsive Layout এর মাধ্যমে একসাথে ডেস্কটপ এবং মোবাইল ডিভাইসে অ্যাপ্লিকেশন চালানো সহজ হয়।

ExtJS এ রেসপন্সিভ ডিজাইন তৈরি করার জন্য বিভিন্ন ধরনের লেআউট, responsiveConfig, এবং media query ব্যবহার করা হয়। এই ফিচারটি আপনার অ্যাপ্লিকেশনকে প্রয়োজনে স্বয়ংক্রিয়ভাবে স্কেল এবং অ্যাডাপ্ট করে।


১. ExtJS তে Responsive Layout তৈরির জন্য ব্যবহৃত কনফিগারেশন

responsiveConfig

responsiveConfig হল ExtJS এর একটি বৈশিষ্ট্য যা বিভিন্ন ডিভাইসের জন্য ভিউ উপাদানগুলি (যেমন: প্যানেল, গ্রিড, বা ফর্ম) কনফিগার করার জন্য ব্যবহৃত হয়। এটি স্ক্রীন সাইজ এবং অন্যান্য মিডিয়া কন্ডিশন অনুযায়ী প্রপার্টি চেঞ্জ করতে সক্ষম।

media query

মিডিয়া কুয়েরি CSS এর মতো ব্যবহার করা হয়, যার মাধ্যমে স্ক্রীন সাইজ অনুযায়ী বিভিন্ন সিএসএস স্টাইল অ্যাপ্লাই করা হয়।


২. Responsive Layout উদাহরণ

ধরা যাক, আপনি একটি প্যানেল তৈরি করতে চান যা ডেস্কটপে একরকম এবং মোবাইলে আরেকরকম দেখাবে। এখানে আমরা responsiveConfig ব্যবহার করব।

উদাহরণ: Responsive Panel তৈরি করা

Ext.define('MyApp.view.ResponsivePanel', {
    extend: 'Ext.panel.Panel',
    xtype: 'responsivepanel',
    title: 'Responsive Panel',
    width: 400,
    height: 300,
    html: '<p>Welcome to the responsive layout!</p>',

    responsiveConfig: {
        'width < 500': {  // যদি স্ক্রীনের প্রস্থ 500px এর কম হয়
            width: '100%',
            height: 'auto',
            html: '<p>Mobile Layout - Adjusted Width and Height</p>'
        },
        'width >= 500': {  // যদি স্ক্রীনের প্রস্থ 500px এর সমান বা বেশি হয়
            width: 400,
            height: 300,
            html: '<p>Desktop Layout - Fixed Width and Height</p>'
        }
    },

    initComponent: function() {
        this.callParent();
    }
});

এখানে:

  • responsiveConfig ব্যবহার করা হয়েছে। যখন স্ক্রীনের প্রস্থ 500px এর নিচে যাবে, তখন প্যানেলটি 100% প্রস্থ নিয়ে মোবাইল ফর্ম্যাটে কনভার্ট হবে।
  • যদি স্ক্রীনের প্রস্থ 500px বা তার বেশি হয়, তখন এটি 400px প্রস্থ এবং 300px উচ্চতা সহ ডেস্কটপ লেআউটে রেন্ডার হবে।

৩. Flex Layout এবং Column Layout ব্যবহার

এছাড়াও Flex Layout এবং Column Layout ব্যবহার করে আপনি বিভিন্ন কলাম এবং রেসপন্সিভ ডিজাইন তৈরি করতে পারেন।

উদাহরণ: Flex Layout এর মাধ্যমে Responsive Panel

Ext.define('MyApp.view.FlexLayoutPanel', {
    extend: 'Ext.panel.Panel',
    xtype: 'flexlayoutpanel',
    title: 'Flex Layout Panel',
    layout: 'hbox',  // flexbox layout
    items: [
        {
            xtype: 'panel',
            flex: 1,  // Flexibly adjusts the width
            html: '<p>Left Panel</p>',
            style: { border: '1px solid black' }
        },
        {
            xtype: 'panel',
            width: 200,  // Fixed width for right panel
            html: '<p>Right Panel</p>',
            style: { border: '1px solid black' }
        }
    ]
});
  • layout: 'hbox': এটি ফ্লেক্সবক্স লেআউট ব্যবহার করছে, যা উপাদানগুলোকে এক সারিতে রাখে এবং সেগুলোর আকার স্ক্রীনের প্রস্থ অনুসারে কাস্টমাইজ করে।
  • flex: ফ্লেক্সবক্সের মাধ্যমে উপাদানগুলি স্বয়ংক্রিয়ভাবে তাদের প্রস্থ বৃদ্ধি বা সংকুচিত করতে পারে।

৪. Responsive Design এর জন্য Media Query ব্যবহার

ExtJS তে CSS স্টাইলিংয়ের মাধ্যমে মিডিয়া কুয়েরি ব্যবহার করতে পারেন। এর মাধ্যমে বিভিন্ন স্ক্রীন সাইজ অনুযায়ী কাস্টম স্টাইল অ্যাপ্লাই করা হয়।

উদাহরণ: CSS Media Query

@media (max-width: 768px) {
    .x-panel {
        background-color: #f0f0f0;  /* Mobile-specific background color */
    }
}

@media (min-width: 769px) {
    .x-panel {
        background-color: #ffffff;  /* Desktop-specific background color */
    }
}

এখানে, মিডিয়া কুয়েরি ব্যবহার করে আমরা মোবাইল এবং ডেস্কটপের জন্য আলাদা ব্যাকগ্রাউন্ড রঙ নির্ধারণ করেছি।


৫. Ext.container.Viewport এবং layout: 'fit'

ডেস্কটপ এবং মোবাইল অ্যাপ্লিকেশন ডিজাইন করতে Ext.container.Viewport এবং layout: 'fit' ব্যবহার করা হয়। এই লেআউটটি স্বয়ংক্রিয়ভাবে কনটেন্টকে স্ক্রীনের পুরো প্রস্থ এবং উচ্চতায় ফিট করে।

উদাহরণ: Viewport Layout

Ext.define('MyApp.view.ViewportPanel', {
    extend: 'Ext.container.Viewport',
    layout: 'fit',
    items: [
        {
            xtype: 'panel',
            title: 'Responsive Viewport Panel',
            html: '<p>This panel fits the entire screen!</p>'
        }
    ]
});
  • layout: 'fit': এটি কনটেন্টকে পুরো স্ক্রীনে ফিট করে এবং খুবই কার্যকর মোবাইল ও ডেস্কটপের জন্য।

৬. রেসপন্সিভ ডিজাইনে Toolbars এবং Menus

ExtJS তে রেসপন্সিভ টুলবার এবং মেনু তৈরি করা সম্ভব, যা স্ক্রীন সাইজ অনুযায়ী টুলবারের আইটেমগুলি সঠিকভাবে ডিসপ্লে করবে। ছোট স্ক্রীনে মেনু বা টুলবার এলিমেন্টগুলোটি সঙ্কুচিত হতে পারে।

উদাহরণ: Responsive Toolbar

Ext.create('Ext.toolbar.Toolbar', {
    renderTo: Ext.getBody(),
    items: [
        { text: 'Home' },
        { text: 'About' },
        { text: 'Contact' },
        {
            xtype: 'tbfill'
        },
        {
            xtype: 'button',
            text: 'Settings',
            menu: {
                items: [
                    { text: 'Profile' },
                    { text: 'Logout' }
                ]
            }
        }
    ]
});

এখানে tbfill ব্যবহার করে টুলবার আইটেমগুলোর মধ্যে ফাঁকা স্থান সৃষ্টি করা হয়েছে।


সারাংশ

  • Responsive Layout তৈরি করার জন্য responsiveConfig এবং media query ব্যবহার করা হয়। এর মাধ্যমে অ্যাপ্লিকেশন UI বিভিন্ন ডিভাইসের স্ক্রীন সাইজ অনুযায়ী স্বয়ংক্রিয়ভাবে অভিযোজিত হয়।
  • layout: 'fit', hbox বা vbox লেআউট ব্যবহার করে রেসপন্সিভ প্যানেল এবং উপাদান তৈরি করা যায়।
  • Ext.container.Viewport লেআউট ব্যবহার করে স্ক্রীনের পুরো প্রস্থে কনটেন্ট ফিট করানো সম্ভব।

এভাবে, ExtJS তে রেসপন্সিভ ডিজাইন তৈরি করলে আপনার অ্যাপ্লিকেশন বিভিন্ন স্ক্রীন সাইজের ডিভাইসে কার্যকরীভাবে চলবে।

Content added By
Promotion